Dạng thức bắc cầu

Dạng thức bắc cầu (bridge pattern) là một dạng thức thiết kế được dùng trong công nghệ phần mềm.Dạng thức bắc cầu dùng để "tách riêng tính trừu tượng ra khỏi thực thể của nó để cho cả hai có thể thay đổi một cách độc lập" (Gamma et. al.). Dạng thức bắc cầu dùng tính đóng gói, tính kết hợp, và có thể dùng tính kế thừa để tách riêng việc xử lý (trách nhiệm) giao cho từng lớp khác nhau.Khi mà các lớp thường xuyên bị thay đổi, thì các đặc tính của lập trình hướng đối tượng trở nên rất hữu ích vì sự thay đổi ở các mã lệnh của chương trình có thể được thực hiện dễ dàng với ít công sức nhất trong việc tìm hiểu toàn bộ chương trình. Dạng thức bắc cầu rất hữu ích khi không chỉ bản thân lớp thay đổi thường xuyên mà ngay cả những công việc mà nó thực hiện cũng thay đổi. Bản thân lớp có thể được xem là một sự trừu tượng và những gì mà lớp đó có thể thực hiện là sự hiện thực.Khi mà sự trừu tượng và sự hiện thực được tách riêng thì sự thay đổi của mỗi cái là không phụ thuộc nhau. Một ví dụ hay của dạng thức thiết kế bắc cầu trong tác phẩm Design Patterns Explained: A New Perspective on Object-Oriented Design của Shalloway và Trott. Giả sử bạn có một sự trừu tượng, đó là một shapes. Bạn muốn có nhiều loại shapes (i.e.: rectangle, triangle, circle...) và mỗi cái có các thuộc tính riêng nhưng có những điểm chung, đó là những điểm mà mọi shapes đều có thể có. Một trong chúng là mọi shapes có thể tự vẽ (draw) chúng. Tuy nhiên, việc vẽ các hình lên màn hình đôi khi phụ thuộc vào các hiện thực đồ họa (hình dáng của mỗi loại shape) khác nhau và hệ điều hành khác nhau. Bạn muốn các shapes của mình có thể thực hiện thao tác vẽ trên nhiều loại hệ thống nhưng nếu để cho shape tự xử lý toàn bộ hay phải chỉnh sửa từng shape class để phù hợp cho từng kiến trúc khác nhau là không thực tiễn. Dạng thức bắc cầu giúp cho bạn tạo ra các lớp mới có thể cung cấp hiện thực các tác vụ vẽ. Lớp trừu tượng, shape, cung cấp các phương thức để lấy các thông tin kích thước và thuộc tính của một shape trong khi lớp hiện thực, vẽ, cung cấp một giao diện cho các tác vụ vẽ. Bây giờ nếu shape mới cần được tạo ra (một hình bông tuyết chẳng hạn) hay nếu muốn có thể vẽ các hĩnh vẽ của bạn bằng các hàm đồ họa API mới thì chỉ việc thêm một lớp mới để xây dựng (implement) các đặc tính bạn cần.

Liên quan